home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
-
- set -eu
-
- usage()
- {
- echo "Usage: $(basename $0) <initramfs file>"
- }
-
- if [ "$#" -eq 0 ] ; then
- usage >&2
- exit 1
- fi
-
- cpio_args="--extract --quiet --list"
-
- OPTIONS=`getopt -o hl --long help,long -n "$0" -- "$@"`
- # Check for non-GNU getopt
- if [ $? != 0 ] ; then echo "W: non-GNU getopt" >&2 ; exit 1 ; fi
-
- eval set -- "$OPTIONS"
-
- while true; do
- case "$1" in
- -h|--help)
- usage
- exit 0
- ;;
- -l|--long)
- cpio_args="${cpio_args:+${cpio_args} --verbose}"
- shift
- ;;
- --)
- shift
- break
- ;;
- *)
- echo "Internal error!" >&2
- exit 1
- esac
- done
-
- for initramfs in "$@" ; do
- if ! [ -r "${initramfs}" ] ; then
- echo "Specified file could not be read." >&2
- exit 1
- else
- echo "${initramfs}"
- if zcat -t "${initramfs}" >/dev/null 2>&1 ; then
- zcat "${initramfs}" | cpio ${cpio_args}
- elif xzcat -t "$initramfs" >/dev/null 2>&1 ; then
- xzcat "$initramfs" | cpio ${cpio_args}
- elif bzip2 -t "$initramfs" >/dev/null 2>&1 ; then
- bzip2 -c -d "$initramfs" | cpio ${cpio_args}
- elif lzop -t "$initramfs" >/dev/null 2>&1 ; then
- lzop -c -d "$initramfs" | cpio ${cpio_args}
- fi
-
- fi
- done
-